package es.uned.ii.si3.web.actions;



import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import es.uned.ii.si3.Constantes;
import es.uned.ii.si3.business.GestionPropuestas;
import es.uned.ii.si3.exceptions.ObjectNotFoundException;
import es.uned.ii.si3.model.Propuesta;
import es.uned.ii.si3.util.UserAgentDetector;
import es.uned.ii.si3.web.actions.generic.LoginRequiredAction;


public class VerPropuestasAction extends LoginRequiredAction {


    public ActionForward executeWithAccess(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response) {
    	
    	UserAgentDetector uaDetector = new UserAgentDetector(request);
    	
		GestionPropuestas gestionPropuestas = new GestionPropuestas();
		int idUsuario = this.getIdUsuario();
		
		if (request.getParameter("idPropuesta") != null) {
			
			int id = -1;
			
			try {
				id = Integer.parseInt(request.getParameter("idPropuesta"));
			} catch (Exception e) {
				return mapping.findForward(uaDetector.composeForward("nohaypropuestas"));
			}
			
			Propuesta propuesta = gestionPropuestas.getPropuestaById(id);

			if (propuesta == null) {
				return mapping.findForward(uaDetector.composeForward("nohaypropuestas"));
			}
				
			request.setAttribute("propuesta", propuesta);
			return mapping.findForward(uaDetector.composeForward("verdetalle"));
			
		} else {
			//Solo el profesor puede sar un listado completo
			if (!this.getUsuario().getRol().getDescripcion().toLowerCase().equals(Constantes.ROL_PROFESOR)) {
				return mapping.findForward(uaDetector.composeForward("nohaypropuestas"));
			}
			
			try {
				List listaPropuestas = gestionPropuestas.getPropuestasPorProfesor(idUsuario);
				request.setAttribute("listaPropuestas", listaPropuestas);
				return mapping.findForward(uaDetector.composeForward("verpropuestas"));
			} catch (ObjectNotFoundException e) {
				return mapping.findForward(uaDetector.composeForward("nohaypropuestas"));
			} catch (Exception e){
				return mapping.findForward(uaDetector.composeForward(Constantes.FAILURE));
			}
			
		}//else

		
    }
}
